home *** CD-ROM | disk | FTP | other *** search
/ Developer CD Series 1997 July: Mac OS SDK / Dev.CD Jul 97 SDK1.toast / Development Kits (Disc 1) / Interfaces&Libraries / Interfaces / PInterfaces / Power.p < prev    next >
Encoding:
Text File  |  1995-07-06  |  12.0 KB  |  411 lines  |  [TEXT/MPS ]

  1. {
  2.      File:        Power.p
  3.  
  4.      Contains:    Power Manager Interfaces.
  5.  
  6.      Version:    Technology:    System 7.5
  7.                  Package:    Universal Interfaces 2.1 in “MPW Latest” on ETO #18
  8.  
  9.      Copyright:    © 1984-1995 by Apple Computer, Inc.
  10.                  All rights reserved.
  11.  
  12.      Bugs?:        If you find a problem with this file, use the Apple Bug Reporter
  13.                  stack.  Include the file and version information (from above)
  14.                  in the problem description and send to:
  15.                      Internet:    apple.bugs@applelink.apple.com
  16.                      AppleLink:    APPLE.BUGS
  17.  
  18. }
  19.  
  20. {$IFC UNDEFINED UsingIncludes}
  21. {$SETC UsingIncludes := 0}
  22. {$ENDC}
  23.  
  24. {$IFC NOT UsingIncludes}
  25.  UNIT Power;
  26.  INTERFACE
  27. {$ENDC}
  28.  
  29. {$IFC UNDEFINED __POWER__}
  30. {$SETC __POWER__ := 1}
  31.  
  32. {$I+}
  33. {$SETC PowerIncludes := UsingIncludes}
  34. {$SETC UsingIncludes := 1}
  35.  
  36.  
  37. {$IFC UNDEFINED __TYPES__}
  38. {$I Types.p}
  39. {$ENDC}
  40. {    ConditionalMacros.p                                            }
  41.  
  42. {$IFC UNDEFINED __MIXEDMODE__}
  43. {$I MixedMode.p}
  44. {$ENDC}
  45.  
  46. {$PUSH}
  47. {$ALIGN MAC68K}
  48. {$LibExport+}
  49.  
  50. CONST
  51. { Bit positions for ModemByte }
  52.     modemOnBit                    = 0;
  53.     ringWakeUpBit                = 2;
  54.     modemInstalledBit            = 3;
  55.     ringDetectBit                = 4;
  56.     modemOnHookBit                = 5;
  57. { masks for ModemByte }
  58.     modemOnMask                    = $01;
  59.     ringWakeUpMask                = $04;
  60.     modemInstalledMask            = $08;
  61.     ringDetectMask                = $10;
  62.     modemOnHookMask                = $20;
  63. { bit positions for BatteryByte }
  64.     chargerConnBit                = 0;
  65.     hiChargeBit                    = 1;
  66.     chargeOverFlowBit            = 2;
  67.     batteryDeadBit                = 3;
  68.     batteryLowBit                = 4;
  69.     connChangedBit                = 5;
  70. { masks for BatteryByte }
  71.     chargerConnMask                = $01;
  72.     hiChargeMask                = $02;
  73.     chargeOverFlowMask            = $04;
  74.     batteryDeadMask                = $08;
  75.     batteryLowMask                = $10;
  76.     connChangedMask                = $20;
  77.  
  78. { commands to SleepQRec sleepQProc }
  79.     sleepRequest                = 1;
  80.     sleepDemand                    = 2;
  81.     sleepWakeUp                    = 3;
  82.     sleepRevoke                    = 4;
  83.     sleepUnlock                    = 4;
  84.     sleepDeny                    = 5;
  85.     sleepNow                    = 6;
  86.     dozeDemand                    = 7;
  87.     dozeWakeUp                    = 8;
  88.     dozeRequest                    = 9;
  89. { SleepQRec.sleepQFlags }
  90.     noCalls                        = 1;
  91.     noRequest                    = 2;
  92.     slpQType                    = 16;
  93.     sleepQType                    = 16;
  94.  
  95. { bits in bitfield returned by PMFeatures }
  96.     hasWakeupTimer                = 0;                            { 1=wakeup timer is supported                        }
  97.     hasSharedModemPort            = 1;                            { 1=modem port shared by SCC and internal modem    }
  98.     hasProcessorCycling            = 2;                            { 1=processor cycling is supported                    }
  99.     mustProcessorCycle            = 3;                            { 1=processor cycling should not be turned off        }
  100.     hasReducedSpeed                = 4;                            { 1=processor can be started up at reduced speed    }
  101.     dynamicSpeedChange            = 5;                            { 1=processor speed can be switched dynamically    }
  102.     hasSCSIDiskMode                = 6;                            { 1=SCSI Disk Mode is supported                    }
  103.     canGetBatteryTime            = 7;                            { 1=battery time can be calculated                    }
  104.     canWakeupOnRing                = 8;                            { 1=can wakeup when the modem detects a ring        }
  105.     hasDimmingSupport            = 9;                            { 1=has dimming support built in                    }
  106.     hasStartupTimer                = 10;                            { 1=startup timer is supported                        }
  107.  
  108. { bits in bitfield returned by GetIntModemInfo and set by SetIntModemState }
  109.     hasInternalModem            = 0;                            { 1=internal modem installed                        }
  110.     intModemRingDetect            = 1;                            { 1=internal modem has detected a ring                }
  111.     intModemOffHook                = 2;                            { 1=internal modem is off hook                        }
  112.     intModemRingWakeEnb            = 3;                            { 1=wakeup on ring is enabled                        }
  113.     extModemSelected            = 4;                            { 1=external modem selected                        }
  114.     modemSetBit                    = 15;                            { 1=set bit, 0=clear bit (SetIntModemState)        }
  115.  
  116. { bits in BatteryInfo.flags                                     }
  117. { ("chargerConnected" doesn't mean the charger is plugged in)    }
  118.     batteryInstalled            = 7;                            { 1=battery is currently connected                    }
  119.     batteryCharging                = 6;                            { 1=battery is being charged                        }
  120.     chargerConnected            = 5;                            { 1=charger is connected to the PowerBook            }
  121.  
  122.     HDPwrQType                    = 'HD';                            { hard disk spindown queue element type            }
  123.     PMgrStateQType                = 'PM';
  124.  
  125.  
  126. TYPE
  127.     BatteryInfo = PACKED RECORD
  128.         flags:                    UInt8;                                    { misc flags (see below)                            }
  129.         warningLevel:            UInt8;                                    { scaled warning level (0-255)                        }
  130.         reserved:                UInt8;                                    { reserved for internal use                        }
  131.         batteryLevel:            UInt8;                                    { scaled battery level (0-255)                        }
  132.     END;
  133.  
  134.     ModemByte = SInt8;
  135.  
  136.     BatteryByte = SInt8;
  137.  
  138.     PMResultCode = LONGINT;
  139.  
  140.     SleepQRecPtr = ^SleepQRec;
  141.  
  142.     {
  143.         SleepQProcPtr uses register based parameters on the 68k and cannot
  144.         be written in or called from a high-level language without the help of
  145.         mixed mode or assembly glue.
  146.  
  147.         In:
  148.          => message         D0.L
  149.          => qRecPtr         A0.L
  150.         Out:
  151.          <= return value    D0.L
  152.     }
  153.     SleepQProcPtr = Register68kProcPtr;  { register FUNCTION SleepQ(message: LONGINT; qRecPtr: SleepQRecPtr): LONGINT; }
  154.     HDSpindownProcPtr = ProcPtr;  { PROCEDURE HDSpindown(VAR theElement: HDQueueElement); }
  155.     SleepQUPP = UniversalProcPtr;
  156.     HDSpindownUPP = UniversalProcPtr;
  157.  
  158.     SleepQRec = RECORD
  159.         sleepQLink:                ^SleepQRec;                                { pointer to next queue element                }
  160.         sleepQType:                INTEGER;                                { queue element type (must be SleepQType)        }
  161.         sleepQProc:                SleepQUPP;                                { pointer to sleep universal proc ptr            }
  162.         sleepQFlags:            INTEGER;                                { flags                                        }
  163.     END;
  164.  
  165.     HDQueueElement = RECORD
  166.         hdQLink:                ^HDQueueElement;                        { pointer to next queue element                }
  167.         hdQType:                INTEGER;                                { queue element type (must be HDPwrQType)        }
  168.         hdFlags:                INTEGER;                                { miscellaneous flags                            }
  169.         hdProc:                    HDSpindownUPP;                            { pointer to routine to call                    }
  170.         hdUser:                    LONGINT;                                { user-defined (variable storage, etc.)        }
  171.     END;
  172.  
  173.     BatteryTimeRec = RECORD
  174.         expectedBatteryTime:    LONGINT;                                { estimated battery time remaining (seconds)    }
  175.         minimumBatteryTime:        LONGINT;                                { minimum battery time remaining (seconds)        }
  176.         maximumBatteryTime:        LONGINT;                                { maximum battery time remaining (seconds)        }
  177.         timeUntilCharged:        LONGINT;                                { time until battery is fully charged (seconds)}
  178.     END;
  179.  
  180.     WakeupTime = RECORD
  181.         wakeTime:                LONGINT;                                { wakeup time (same format as current time)        }
  182.         wakeEnabled:            BOOLEAN;                                { 1=enable wakeup timer, 0=disable wakeup timer    }
  183.     END;
  184.  
  185.     StartupTime = RECORD
  186.         startTime:                LONGINT;                                { startup time (same format as current time)        }
  187.         startEnabled:            BOOLEAN;                                { 1=enable startup timer, 0=disable startup timer    }
  188.     END;
  189.  
  190.  
  191. FUNCTION DisableWUTime: OSErr;
  192. FUNCTION SetWUTime(WUTime: LONGINT): OSErr;
  193. FUNCTION GetWUTime(VAR WUTime: LONGINT; VAR WUFlag: SignedByte): OSErr;
  194. FUNCTION BatteryStatus(VAR Status: SignedByte; VAR Power: SignedByte): OSErr;
  195. FUNCTION ModemStatus(VAR Status: SignedByte): OSErr;
  196. FUNCTION IdleUpdate: LONGINT;
  197.     {$IFC NOT GENERATINGCFM}
  198.     INLINE $A285, $2E80;
  199.     {$ENDC}
  200. FUNCTION GetCPUSpeed: LONGINT;
  201.     {$IFC NOT GENERATINGCFM}
  202.     INLINE $70FF, $A485, $2E80;
  203.     {$ENDC}
  204. PROCEDURE EnableIdle;
  205.     {$IFC NOT GENERATINGCFM}
  206.     INLINE $7000, $A485;
  207.     {$ENDC}
  208. PROCEDURE DisableIdle;
  209.     {$IFC NOT GENERATINGCFM}
  210.     INLINE $7001, $A485;
  211.     {$ENDC}
  212. PROCEDURE SleepQInstall(qRecPtr: SleepQRecPtr);
  213.     {$IFC NOT GENERATINGCFM}
  214.     INLINE $205F, $A28A;
  215.     {$ENDC}
  216. PROCEDURE SleepQRemove(qRecPtr: SleepQRecPtr);
  217.     {$IFC NOT GENERATINGCFM}
  218.     INLINE $205F, $A48A;
  219.     {$ENDC}
  220. PROCEDURE AOn;
  221.     {$IFC NOT GENERATINGCFM}
  222.     INLINE $7004, $A685;
  223.     {$ENDC}
  224. PROCEDURE AOnIgnoreModem;
  225.     {$IFC NOT GENERATINGCFM}
  226.     INLINE $7005, $A685;
  227.     {$ENDC}
  228. PROCEDURE BOn;
  229.     {$IFC NOT GENERATINGCFM}
  230.     INLINE $7000, $A685;
  231.     {$ENDC}
  232. PROCEDURE AOff;
  233.     {$IFC NOT GENERATINGCFM}
  234.     INLINE $7084, $A685;
  235.     {$ENDC}
  236. PROCEDURE BOff;
  237.     {$IFC NOT GENERATINGCFM}
  238.     INLINE $7080, $A685;
  239.     {$ENDC}
  240. { Public Power Management API (NEW!) }
  241. FUNCTION PMSelectorCount: INTEGER;
  242.     {$IFC NOT GENERATINGCFM}
  243.     INLINE $7000, $A09E, $3E80;
  244.     {$ENDC}
  245. FUNCTION PMFeatures: LONGINT;
  246.     {$IFC NOT GENERATINGCFM}
  247.     INLINE $7001, $A09E, $2E80;
  248.     {$ENDC}
  249. FUNCTION GetSleepTimeout: UInt8;
  250.     {$IFC NOT GENERATINGCFM}
  251.     INLINE $7002, $A09E, $1E80;
  252.     {$ENDC}
  253. PROCEDURE SetSleepTimeout(timeout: ByteParameter);
  254.     {$IFC NOT GENERATINGCFM}
  255.     INLINE $101F, $4840, $303C, $0003, $A09E;
  256.     {$ENDC}
  257. FUNCTION GetHardDiskTimeout: UInt8;
  258.     {$IFC NOT GENERATINGCFM}
  259.     INLINE $7004, $A09E, $1E80;
  260.     {$ENDC}
  261. PROCEDURE SetHardDiskTimeout(timeout: ByteParameter);
  262.     {$IFC NOT GENERATINGCFM}
  263.     INLINE $101F, $4840, $303C, $0005, $A09E;
  264.     {$ENDC}
  265. FUNCTION HardDiskPowered: BOOLEAN;
  266.     {$IFC NOT GENERATINGCFM}
  267.     INLINE $7006, $A09E, $1E80;
  268.     {$ENDC}
  269. PROCEDURE SpinDownHardDisk;
  270.     {$IFC NOT GENERATINGCFM}
  271.     INLINE $7007, $A09E;
  272.     {$ENDC}
  273. FUNCTION IsSpindownDisabled: BOOLEAN;
  274.     {$IFC NOT GENERATINGCFM}
  275.     INLINE $7008, $A09E, $1E80;
  276.     {$ENDC}
  277. PROCEDURE SetSpindownDisable(setDisable: BOOLEAN);
  278.     {$IFC NOT GENERATINGCFM}
  279.     INLINE $101F, $4840, $303C, $0009, $A09E;
  280.     {$ENDC}
  281. FUNCTION HardDiskQInstall(VAR theElement: HDQueueElement): OSErr;
  282.     {$IFC NOT GENERATINGCFM}
  283.     INLINE $205F, $700A, $A09E, $3E80;
  284.     {$ENDC}
  285. FUNCTION HardDiskQRemove(VAR theElement: HDQueueElement): OSErr;
  286.     {$IFC NOT GENERATINGCFM}
  287.     INLINE $205F, $700B, $A09E, $3E80;
  288.     {$ENDC}
  289. PROCEDURE GetScaledBatteryInfo(whichBattery: INTEGER; VAR theInfo: BatteryInfo);
  290.     {$IFC NOT GENERATINGCFM}
  291.     INLINE $205F, $301F, $4840, $303C, $000C, $A09E, $2080;
  292.     {$ENDC}
  293. PROCEDURE AutoSleepControl(enableSleep: BOOLEAN);
  294.     {$IFC NOT GENERATINGCFM}
  295.     INLINE $101F, $4840, $303C, $000D, $A09E;
  296.     {$ENDC}
  297. FUNCTION GetIntModemInfo: LONGINT;
  298.     {$IFC NOT GENERATINGCFM}
  299.     INLINE $700E, $A09E, $2E80;
  300.     {$ENDC}
  301. PROCEDURE SetIntModemState(theState: INTEGER);
  302.     {$IFC NOT GENERATINGCFM}
  303.     INLINE $301F, $4840, $303C, $000F, $A09E;
  304.     {$ENDC}
  305. FUNCTION MaximumProcessorSpeed: INTEGER;
  306.     {$IFC NOT GENERATINGCFM}
  307.     INLINE $7010, $A09E, $3E80;
  308.     {$ENDC}
  309. FUNCTION CurrentProcessorSpeed: INTEGER;
  310.     {$IFC NOT GENERATINGCFM}
  311.     INLINE $7011, $A09E, $3E80;
  312.     {$ENDC}
  313. FUNCTION FullProcessorSpeed: BOOLEAN;
  314.     {$IFC NOT GENERATINGCFM}
  315.     INLINE $7012, $A09E, $1E80;
  316.     {$ENDC}
  317. FUNCTION SetProcessorSpeed(fullSpeed: BOOLEAN): BOOLEAN;
  318.     {$IFC NOT GENERATINGCFM}
  319.     INLINE $101F, $4840, $303C, $0013, $A09E, $1E80;
  320.     {$ENDC}
  321. FUNCTION GetSCSIDiskModeAddress: INTEGER;
  322.     {$IFC NOT GENERATINGCFM}
  323.     INLINE $7014, $A09E, $3E80;
  324.     {$ENDC}
  325. PROCEDURE SetSCSIDiskModeAddress(scsiAddress: INTEGER);
  326.     {$IFC NOT GENERATINGCFM}
  327.     INLINE $301F, $4840, $303C, $0015, $A09E;
  328.     {$ENDC}
  329. PROCEDURE GetWakeupTimer(VAR theTime: WakeupTime);
  330.     {$IFC NOT GENERATINGCFM}
  331.     INLINE $205F, $7016, $A09E;
  332.     {$ENDC}
  333. PROCEDURE SetWakeupTimer(VAR theTime: WakeupTime);
  334.     {$IFC NOT GENERATINGCFM}
  335.     INLINE $205F, $7017, $A09E;
  336.     {$ENDC}
  337. FUNCTION IsProcessorCyclingEnabled: BOOLEAN;
  338.     {$IFC NOT GENERATINGCFM}
  339.     INLINE $7018, $A09E, $1E80;
  340.     {$ENDC}
  341. PROCEDURE EnableProcessorCycling(enable: BOOLEAN);
  342.     {$IFC NOT GENERATINGCFM}
  343.     INLINE $101F, $4840, $303C, $0019, $A09E;
  344.     {$ENDC}
  345. FUNCTION BatteryCount: INTEGER;
  346.     {$IFC NOT GENERATINGCFM}
  347.     INLINE $701A, $A09E, $3E80;
  348.     {$ENDC}
  349. FUNCTION GetBatteryVoltage(whichBattery: INTEGER): Fixed;
  350.     {$IFC NOT GENERATINGCFM}
  351.     INLINE $301F, $4840, $303C, $001B, $A09E, $2E80;
  352.     {$ENDC}
  353. PROCEDURE GetBatteryTimes(whichBattery: INTEGER; VAR theTimes: BatteryTimeRec);
  354.     {$IFC NOT GENERATINGCFM}
  355.     INLINE $205F, $301F, $4840, $303C, $001C, $A09E;
  356.     {$ENDC}
  357. FUNCTION GetDimmingTimeout: UInt8;
  358.     {$IFC NOT GENERATINGCFM}
  359.     INLINE $701D, $A09E, $1E80;
  360.     {$ENDC}
  361. PROCEDURE SetDimmingTimeout(timeout: ByteParameter);
  362.     {$IFC NOT GENERATINGCFM}
  363.     INLINE $101F, $4840, $303C, $001E, $A09E;
  364.     {$ENDC}
  365. PROCEDURE DimmingControl(enableSleep: BOOLEAN);
  366.     {$IFC NOT GENERATINGCFM}
  367.     INLINE $101F, $4840, $303C, $001F, $A09E;
  368.     {$ENDC}
  369. FUNCTION IsDimmingControlDisabled: BOOLEAN;
  370.     {$IFC NOT GENERATINGCFM}
  371.     INLINE $7020, $A09E, $1E80;
  372.     {$ENDC}
  373. FUNCTION IsAutoSlpControlDisabled: BOOLEAN;
  374.     {$IFC NOT GENERATINGCFM}
  375.     INLINE $7021, $A09E, $1E80;
  376.     {$ENDC}
  377. CONST
  378.     uppSleepQProcInfo = $00131832; { Register FUNCTION (4 bytes in D0, 4 bytes in A0): 4 bytes in D0; }
  379.     uppHDSpindownProcInfo = $000000C0; { PROCEDURE (4 byte param); }
  380.  
  381. FUNCTION NewSleepQProc(userRoutine: SleepQProcPtr): SleepQUPP;
  382.     {$IFC NOT GENERATINGCFM }
  383.     INLINE $2E9F;
  384.     {$ENDC}
  385.  
  386. FUNCTION NewHDSpindownProc(userRoutine: HDSpindownProcPtr): HDSpindownUPP;
  387.     {$IFC NOT GENERATINGCFM }
  388.     INLINE $2E9F;
  389.     {$ENDC}
  390.  
  391. FUNCTION CallSleepQProc(message: LONGINT; qRecPtr: SleepQRecPtr; userRoutine: SleepQUPP): LONGINT;
  392.     {$IFC NOT GENERATINGCFM}
  393.     {To be implemented:  Glue to move parameters into registers.}
  394.     {$ENDC}
  395.  
  396. PROCEDURE CallHDSpindownProc(VAR theElement: HDQueueElement; userRoutine: HDSpindownUPP);
  397.     {$IFC NOT GENERATINGCFM}
  398.     INLINE $205F, $4E90;
  399.     {$ENDC}
  400.  
  401. {$ALIGN RESET}
  402. {$POP}
  403.  
  404. {$SETC UsingIncludes := PowerIncludes}
  405.  
  406. {$ENDC} {__POWER__}
  407.  
  408. {$IFC NOT UsingIncludes}
  409.  END.
  410. {$ENDC}
  411.